<template>
  <div>
    <h1 style="color: orange">个人中心页面</h1>
    <el-form label-width="80px" style="width: 500px">
      <el-form-item label="头像">
<!--    上传组件开始
   action设置上传地址
   name设置参数名
   limit设置上传文件数量
   -->

        <el-upload
            :action="BASE_URL+'/v1/upload'"
            name="file"
            :limit="1"
            list-type="picture-card"
            :on-success="handleSuccess"
            :on-preview="handlePictureCardPreview"
            :on-remove="handleRemove">
          <i class="el-icon-plus"></i>
        </el-upload>
        <el-dialog :visible.sync="dialogVisible">
          <img width="100%" :src="dialogImageUrl" alt="">
        </el-dialog>
<!--    上传组件结束    -->
      </el-form-item>
      <el-form-item label="昵称">
        <el-input placeholder="请输入昵称" v-model="user.nickname"></el-input>
      </el-form-item>
      <el-form-item label="用户名">
        <el-input :value="user.username" disabled></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="save()">保存</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
import axios from "axios";

export default {
  name: "PersonalIndexView",
  data() {
    return {
      dialogImageUrl: '',
      dialogVisible: false,
      user:localStorage.user?JSON.parse(localStorage.user):null
    };
  },
  methods: {

    handleSuccess(response,file,fileList){//上传成功后调用的方法

      //response 代表服务器响应的内容(JsonResult,response.data是图片路径)
      //file代表上传成功的文件对象  fileList代表上传成功的多个文件对象(选择多个文件时)
      //response代表JsonResult对象 response.data得到的时服务器响应的图片路径
      this.user.imgUrl=response.data;
    },
    save(){
      //发请求进行修改
      let data = this.qs.stringify(this.user);
      this.axios.post('http://localhost:8080/v1/users/update',data)
      .then((response)=>{
        if (response.data.code==1){
          this.$message.success("修改成功!");
          //把localStorage里面的用户数据更新
          localStorage.user = JSON.stringify(this.user);
          //页面刷新
          location.reload();
        }
      })
    },
    handleRemove(file, fileList) {//当点击删除图片时调用的方法
      //得到之前的用户信息
      let u = JSON.parse(localStorage.user);
      this.user.imgUrl=u.imgUrl;//删除图片后让user的图片路径恢复成之前的路径
      console.log(file, fileList);
      //向服务器发请求删除服务器的图片 file.response=JsonResult
      //file.response.data 删除文件对应的图片路径
      this.axios.post(this.BASE_URL+'/v1/remove?url='+file.response.data)
        .then((response)=>{
          if (response.data.code==1){
            this.$message.success("删除完成!");
          }
        })


    },
    handlePictureCardPreview(file) {
      this.dialogImageUrl = file.url;
      this.dialogVisible = true;
    }
  }
}
</script>

<style scoped>

</style>